package com.labot.service.impl;

import com.labot.dao.PedidoNoConformeDao;
import com.labot.model.PedidoNoConforme;
import com.labot.model.PedidoNoConformeBitacora;
import com.labot.service.PedidoNoConformeManager;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;
import java.util.List;
import java.util.Set;

/**
 * Implementation of RoleManager interface.
 *
 * @author <a href="mailto:dan@getrolling.com">Dan Kibler</a>
 */
@Service("pedidonoconformeManager")
public class PedidoNoConformeManagerImpl extends GenericManagerImpl<PedidoNoConforme, Long> implements PedidoNoConformeManager {
    PedidoNoConformeDao pedidonoconformeDao;

    @Autowired
    public PedidoNoConformeManagerImpl(PedidoNoConformeDao pedidonoconformeDao) {
        super(pedidonoconformeDao);
        this.pedidonoconformeDao = pedidonoconformeDao;
    }

	@Override
	public void setPedidoNoConformeDao(PedidoNoConformeDao pedidonoconformeDao) {
		 this.pedidonoconformeDao = pedidonoconformeDao;
		
	}

	@Override
	public List<PedidoNoConforme> getNuevaMuestrasByCentro(Long id) throws Exception {
		return pedidonoconformeDao.getNuevaMuestrasbyCentro(id);
	}
	
	public List<PedidoNoConforme> getNuevaMuestrasporRango(Date fechadesde, Date fechahasta) throws Exception {
		return pedidonoconformeDao.getNuevaMuestrasporRango(fechadesde, fechahasta);
	}
	
	public Set<PedidoNoConformeBitacora> getBitacorasNuevaMuestra(Long idNuevaMuestra) throws Exception {
		return pedidonoconformeDao.getBitacoras(idNuevaMuestra);
	}

	@Override
	public List<PedidoNoConforme> getNuevaMuestras() {
		return pedidonoconformeDao.getNuevaMuestras();
	}

	@Override
	public PedidoNoConforme saveNuevaMuestra(PedidoNoConforme nuevamuestra) {
		return pedidonoconformeDao.saveNuevaMuestra(nuevamuestra);
	}

	@Override
	public void removeNuevaMuestra(PedidoNoConforme nuevamuestra) {
		pedidonoconformeDao.remove(nuevamuestra);
		
	}

	@Override
	public void removeNuevaMuestra(String nuevamuestraId) {
		pedidonoconformeDao.remove(Long.parseLong(nuevamuestraId));
		
	}

	@Override
	public PedidoNoConforme buscarNuevaMuestra(Long id) {
		return pedidonoconformeDao.buscarNuevaMuestra(id);
	}

	@Override
	public List<PedidoNoConforme> getNuevaMuestrasRegistradoNoUrgentes() {
		return pedidonoconformeDao.getNuevaMuestrasRegistradasNoUrgentes();
		
	}

	@Override
	public List<PedidoNoConforme> getNuevaMuestrasUrgentes() {
		return pedidonoconformeDao.getNuevaMuestrasUrgentes();
	}

	@Override
	public List<PedidoNoConforme> getNuevaMuestrasEnProceso() {
		return pedidonoconformeDao.getNuevaMuestrasEnProceso();
	}

	@Override
	public List<PedidoNoConforme> getNuevaMuestrasAvisado() {
		return pedidonoconformeDao.getNuevaMuestrasAvisado();
	}

	@Override
	public List<PedidoNoConforme> getNuevaMuestrasCerradas() {
		return pedidonoconformeDao.getNuevaMuestrasCerradas();
	}

	@Override
	public List<PedidoNoConforme> getTodos() {
		return pedidonoconformeDao.getTodos();
	}

	@Override
	public List<PedidoNoConforme> getFiltrados(Long idareasolicita, String reclamo, String estado, String urgente, String muestra, Long idclasificacion, Date fechadesde, Date fechahasta, String numeroprotocolo) {
		return pedidonoconformeDao.getFiltrados(idareasolicita,reclamo,estado,urgente,muestra,idclasificacion,fechadesde,fechahasta,numeroprotocolo);
	}

	@Override
	@Transactional
	public List<PedidoNoConforme> getPedidosAprocesar15hs() {
		return pedidonoconformeDao.getPedidosAprocesar15hs();
	}

	@Override
	@Transactional
	public List<PedidoNoConforme> getPedidosAprocesar13hs() {
		return pedidonoconformeDao.getPedidosAprocesar13hs();
	}

	@Override
	public PedidoNoConforme getNuevaMuestraPorProtocolo(String numero) {
		return pedidonoconformeDao.getNuevaMuestraPorProtocolo(numero);
	}
}